package com.wxg.mvn;

import java.io.File;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;

import com.wxg.util.MyUtils.Prop;

public class DeleteSpecialArtifactDirectory {

	public void del(Prop prop){
		Set<String> keySets = prop.keySet();
		List<String> rootList = new ArrayList<String>();
		List<String> saList = new ArrayList<String>();
		List<String> fileList = new ArrayList<String>();
		for(String key : keySets){
			if(key.contains("specialArtifact")){
				saList.add(prop.get(key));
			}
			if(key.contains("localRepo")){
				rootList.add( prop.get(key) );
			}
		}
		if(saList.size() > 0){
			String[] arr = new String[2];
			for(String str : saList){
				arr = str.split("@");
				for(String prefix : rootList){
					fileList.add( prefix + "/" + arr[0].replaceAll("\\.", "/") + "/" + arr[1] );
				}
			}
		}
		if( fileList.size() > 0 ){
			File file =  null;
			for(String filepath : fileList){
				file = new File(filepath);
				if( file.exists() ){
					recursionDelFile( new File(filepath) );
					System.out.println( "删除目录: [" + filepath + "]" );
				}else{
					System.out.println( "目录: [" + filepath + "]不存在" );
				}
			}
		}
	}
	
	/**
	 * 删除一个目录
	 * JDK API 要求删除一个目录,此目录必须是空目录才行.
	 * 那么删除一个目录就必须先删除此目录下的所有子目录或文件
	 * 
	 * 基本功还是要常常练习才行啊!这么简单的一个功能我竟然失败了三次才完整做出来!
	 * @param file
	 */
	private void recursionDelFile(File file){
		if( file.isDirectory() ){
			File[] fileArr = file.listFiles();
			if( fileArr.length > 0 ){
				for(File f : file.listFiles()){
					recursionDelFile( f );
				}
			}else{
				file.delete();
			}
		}
		if( file.isFile() ){
			file.delete();
		}
	}
}
